Spring Cloud | Note-3

Spring Cloud微服务 | Note(3)

@2018年8月2日 15:13:33

单块架构进化为微服务架构

单块架构

1533195168009

优点:

功能划分清晰;层次关系良好;层层独立;部署简单;相对技术单一;成本低

缺点:

功能太大;升级风险高;维护成本增加;交付周期变长(按系统交付);可伸缩性差;监控困难


微服务架构

随着系统的壮大,单块架构需要转化,转化成每一个服务单元模块,以API交互,平台无关,高内聚低耦合

1533195708067


微服务设计原则(颗粒度设计原则)

Q:什么是微服务

A:服务可以运行在自己进程中(独立部署),轻量级交互机制,例如HTTP交互,服务A和B之间,没有太多的技术关联,可以使用不同的数据存储形式(MySQL或NoSQL)

设计原则

1.拆分足够微(颗粒度):足够小足以即可(亚马逊两个披萨原则,不能太小,不能太大,满足管理成本)

2.轻量级通信:微服务函数之间的调用需要体现跨域、跨主机,同步(REST),异步(消息中间件)

3.领域驱动原则:服务需要体现领域业务模型,减少微服务通用语言的复杂性,使团队理解服务上下文边界(明确了解开发的业务功能)

4.单一职责原则:颗粒度粗(高耦合,不利于维护,修改重合);高内聚,低耦合,对其它服务的依赖要低,单一界限上下文,通过公开的API访问

5.DevOps以及两个披萨:开发团队小而精,且具有全栈能力,降低沟通成本

6.不限于技术栈:与平台无关,根据场景、业务具体选择技术栈


微服务
服务拆分:

​ ·关注服务的颗粒度,颗粒度才用领域驱动设计进行指导,专注某一领域的功能;

服务注册:

​ ·每个微服务,服务之间的通讯实现;服务注册机制(服务注册中心);通过心跳机制获取状态,并且通过状态通知其他服务;

服务发现:

​ ·通过服务名称等找到所需的服务

服务消费:

​ ·调用其他服务的过程;消费者(调用者),提供商(被调用)

统一入口:

​ ·给服务提供方便的服务名称

配置管理:

​ ·定制功能的配置文件不同;

熔断机制:

​ ·系统的防护;阻挡所有的访问,断开某些服务,返回提示信息,保护系统;

自动拓展:

​ ·服务根据负荷状况,进行自动扩展;


微服务拆分:
意义:

​ ·易于实现;利于维护;易于部署,轻量级(Spring Boot内嵌tomcat);易于更新(服务都是隔离的,易于修改、更新、部署)

正向的反馈闭环:

1533197427183

拆分方法:

横向拆分:根据不同的业务功能,拆分成不同的微服务

​ ·数据采集,数据存储,数据查询,数据展示

纵向拆分:把业务中的不同的功能,模块进行拆分

​ ·1533197559770

使用DDD(驱动设计原则):反映领域的业务模型

​ ·天气数据采集限界上下文:数据采集,数据存储

​ ·天气预报限界上下文:数据展示

​ ·天气数据API限界上下文:数据查询

​ ·城市数据API限界上下文:数据查询


附录

微服务架构设计

NGINX-BLOG

微服务架构的优势与不足

使用API Gateway

深入微服务架构的进程间通信

服务发现的可行方案以及实践案例

微服务的事件驱动数据管理

选择微服务部署策略

从单体式架构迁移到微服务架构

@2018年8月2日 16:20:46